﻿/**
 * @brief 封装以进行更简易的识别
 */
#pragma once

#include <map>
#include <memory>
#include <string>
#include <vector>

namespace cv {
class Mat;
}
class DCSP_CORE;

class OnnxDetector {
 public:
  explicit OnnxDetector();
  ~OnnxDetector();

  /**
   * @brief 对输入的图片进行识别,并在图片上进行绘制矩形框
   * @param inputImg
   */
  void detect(cv::Mat &inputImg) const;

  /**
   * @brief 识别文件夹内的所有图片
   * @param imgsFolder 图片文件夹
   */
  void detectImages(const std::string &imgsFolder);

  /**
   * @brief 识别视频图片
   * @param videoPath 视频路径
   */
  void detectVideo(const std::string &videoPath);

 private:
  /** @brief 识别实例 */
  std::shared_ptr<DCSP_CORE> detector_;

  /** @brief 颜色盒,每个种类使用同一颜色 */
  std::map<int, std::vector<int>> colorBox_;
};
